//
//  TWPresentationController.swift
//  EyepetizerImitative
//
//  Created by 田伟 on 2017/4/24.
//  Copyright © 2017年 个人. All rights reserved.
//  对分享页面弹出视图的设置

import UIKit

class TWPresentationController: UIPresentationController {
    
    // MARK:- 对外提供的属性
    var presentedFrame : CGRect = CGRect.zero
    
    // MARK:- 懒加载属性
    fileprivate lazy var coverView :UIView = UIView()
    
    // MARK:- 系统回调函数：重写即将布局的方法
    override func containerViewWillLayoutSubviews() {
        super.containerViewWillLayoutSubviews()
        
        // 1设置弹出view的尺寸
        presentedView?.frame = presentedFrame
        // 2添加蒙版
        setupCoverView() 
    }
}

// MARK:- 设置UI界面相关
extension TWPresentationController {
    /// 设置蒙版
    fileprivate func setupCoverView() {
        
        // 1添加蒙版
        containerView?.insertSubview(coverView, at: 0)
        
        // 2设置蒙版属性
        coverView.backgroundColor = UIColor(white: 0.0, alpha: 0.5)
        
        // 3设置蒙版的frame：coverView.frame = containerView?.bounds报错，因为containerView.bounds有可能为nil，不能把一个nil赋值给CGRect类型的frame。
        // 解决方法1:确定有containerView，他必定有一个bounds，直接解包即可coverView.frame = containerView!.bounds
        // 解决方法1:coverView.frame = containerView?.bounds ?? CGRect.zero———— ??表示只要前面的这句话为nil了，他就直接取后面这个值，如果前面的这句话不为nil，那就对前面的那个可选类型进行解包，解包之后拿到值再赋值给前面的frame
        coverView.frame = containerView?.bounds ?? CGRect.zero
        
        // 3添加手势监听点击
        let tapGes : UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(coverViewClick))
        coverView.addGestureRecognizer(tapGes)
    }
}

// MARK:- 监听点击
extension TWPresentationController {
    /// 退出弹框
    @objc fileprivate func coverViewClick() {
        presentedViewController.dismiss(animated: true, completion: nil)
    }
}

